package com.yuelife.controller;

import com.yuelife.pojo.Buygoodlable;
import com.yuelife.pojo.Buygoodtype;
import com.yuelife.service.BuygoodLableService;
import com.yuelife.service.BuygoodTypeService;
import com.yuelife.until.TimeHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author by Rxzeg
 * @date 2020-06-12 15:09
 * @describe
 */
@Controller
@CrossOrigin
@RequestMapping("/lable")
public class BuyGoodLableController {
    @Autowired
    private BuygoodLableService service;
    @GetMapping("/list")
    @ResponseBody
    public Map selectbytid(int id){
       Map map=new HashMap();
        List<Buygoodlable> lists=service.selectBytid(id);
        map.put("lablelist",lists);
        return map;
    }
    //帮买价格计算
    @GetMapping("/getprice")
    @ResponseBody
    public Map getPrice(@RequestParam("distance") int distance, @RequestParam("duration") int duration){
        Map map=new HashMap();
        //System.out.println("++++++++"+distance);
       // System.out.println("**********"+duration);
        int buytime=40*60*1000;//买东西花费的时间 毫秒
        int toCustomer=10*60*1000;//导航结束到客户手中的时间 毫秒
        int price=0;//实际配送费
        int basicSendPrice=11;//基础配送费
        int distancePrice=0;/* 距离附加费 */
        int weightPrice=0;/*  重量*/
        int specialTimePrice=0;/* 特殊时段0-7 +2  22-24  +1 */
        int difficultPrice=0;/*,  雨雪天气，困难路段*/
        int c=(distance-3000)/1000;
        if(TimeHelper.isEffectiveDate("00:00:00","07:00:00")){
            specialTimePrice=2;//这个区间的特殊费用为2
            //计算距离的方法
            if(distance/1000==0){
                distancePrice=2*c;
                price=11+2*c+specialTimePrice;
                map.put("k_Num",c+3+"公里");
            }else{
                distancePrice=2*(c+1);
                price=11+2*(c+1)+specialTimePrice;
                map.put("k_Num",c+4+"公里内");
            }
        }else if(TimeHelper.isEffectiveDate("22:00:00","24:00:00")){
            specialTimePrice=1;//这个区间的特殊费用为1
            //计算距离的方法
            if(distance/1000==0){
                distancePrice=2*c;
                price=11+2*c+specialTimePrice;
                map.put("k_Num",c+3+"公里");
            }else{
                distancePrice=2*(c+1);
                price=11+2*(c+1)+specialTimePrice;
                map.put("k_Num",c+4+"公里内");
            }
        }else{//没有特殊时段费用
            //计算距离的方法
            if(distance/1000==0){
                distancePrice=2*c;
                price=11+2*c;
                map.put("k_Num",c+3+"公里");
            }else{
                distancePrice=2*(c+1);
                price=11+2*(c+1);
                map.put("k_Num",c+4+"公里内");
            }
        }

        map.put("price",price);//实际配送费
        map.put("basicSendPrice",basicSendPrice);//基础费用
        map.put("distancePrice",distancePrice);//距离费用
        map.put("specialTimePrice",specialTimePrice);//特殊时段费用
        //需要多少毫秒数
        int sendTime=duration*1000+buytime+toCustomer;
       // System.out.println(sendTime);
        //预估送达的时间为
          String  estimateTime=new TimeHelper().getTime(sendTime);
          map.put("estimateTime",estimateTime);//预估到达时间
        return  map;
    }
    //帮送的价格计算
    @GetMapping("/getSendPrice")
    @ResponseBody
    public Map getSendPrice(@RequestParam("distance") int distance,
                            @RequestParam("duration") int duration,
                            @RequestParam("goodWeight") int goodWeight){
        Map map=new HashMap();
        int toarrivetime=25*60*1000;//骑手赶到取货地址的时间，5公里内 毫秒
        int waitgoodtime=10*60*1000;//骑手取货时间  毫秒
        int toCustomer=10*60*1000;//导航结束到客户手中的时间 毫秒
        int price=0;//实际配送费
        int basicSendPrice=6;//基础配送费
        int distancePrice=0;/* 距离附加费 */
        int weightPrice=0;/*  重量*/
        int specialTimePrice=0;/* 特殊时段0-7 +2  22-24  +1 */
        int difficultPrice=0;/*,  雨雪天气，困难路段*/
        int c=distance/1000;
       //计算重量费用
        if(goodWeight<6){
            weightPrice=0;
        }else if(goodWeight>=6 && goodWeight<=10){
            weightPrice=6;
        }else{
            weightPrice=10;
        }
        //特殊时段费用
        if(TimeHelper.isEffectiveDate("00:00:00","07:00:00")){
            specialTimePrice=2;//这个区间的特殊费用为2
        }else if(TimeHelper.isEffectiveDate("22:00:00","24:00:00")){
            specialTimePrice=1;//这个区间的特殊费用为1
        }else{//没有特殊时段费用
            specialTimePrice=0;
        }
        //距离费用
        if(distance>0 && distance<=4000){
            //能整除就是当前公里数，不能整除+1
            if(distance%1000==0){
                distancePrice=c;
                map.put("k_Num",c+"公里");
            }else{
                distancePrice=c+1;
                map.put("k_Num",c+1+"公里内");
            }
        }else if(distance>4000 && distance<=5000){
            //能整除就是当前公里数，不能整除+1
            if(distance%1000==0){
                distancePrice=9;
                map.put("k_Num",c+"公里");
            }else{
                distancePrice=9;
                map.put("k_Num",c+1+"公里内");
            }
        }else if(distance>5000 && distance<=100000){
            //能整除就是当前公里数，不能整除+1
            if(distance%1000==0){
                distancePrice=9+(c-5)*2;
                map.put("k_Num",c+"公里");
            }else{
                distancePrice=9+(c-4)*2;
                map.put("k_Num",c+1+"公里内");
            }
        }
        map.put("basicSendPrice",basicSendPrice);//基础费用 1
        map.put("distancePrice",distancePrice);//距离费用 1
        map.put("specialTimePrice",specialTimePrice);//特殊时段费用 1
        map.put("weightPrice",weightPrice);//重量附加费用 1
        map.put("difficultPrice",difficultPrice);//
        price=basicSendPrice+distancePrice+weightPrice+specialTimePrice+difficultPrice;
        map.put("price",price);//实际配送费
        //需要多少毫秒数
        int sendTime=duration*1000+toarrivetime+toCustomer+waitgoodtime;
        // System.out.println(sendTime);
        Date estimateTime_time= new Date(new Date().getTime()+sendTime);
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String estimateTime_string= sdf.format(estimateTime_time);
        //System.out.println(estimateTime_time);
        map.put("estimateTime_time",estimateTime_string);//可识别的时间格式
        //System.out.println(estimateTime_string);
        //预估送达的时间为
        String  estimateTime=new TimeHelper().getTime(sendTime);
        map.put("estimateTime",estimateTime);//预估到达时间String格式
    return map;
    }
}
